A virtual machine (VM) is an emulation of a computer system. When executed on appropriate hardware, a VM creates an environment allowing the virtualization of an actual physical computer system (e.g., a server, a mainframe computer, etc.). The actual physical computer system is typically referred to as a “host machine.” Typically, a component on the host machine known as a “hypervisor” (or a “virtual machine monitor”) manages the execution of one or more virtual machines or “guests”, providing a variety of functions such as virtualizing and allocating resources, context switching among virtual machines, etc. The operating system (OS) of the virtual machine is typically referred to as the “guest operating system” or “guest OS.” In some implementations, the guest OS and applications executing within the guest OS can be collectively referred to as the “guest.”
A virtual machine may comprise one or more “virtual processors” (VCPUs), each of which maps, possibly in a many-to-one fashion, to a central processing unit (CPU) of the host machine. The hypervisor can manage these mappings in a transparent fashion, thereby enabling the guest operating system and applications executing on the virtual machine to interact with the virtual processors as though they were actual physical entities.